package com.example.controller;

import com.example.entity.Question;
import com.example.entity.Result;
import com.example.service.QuestionService;
import com.example.utils.ThreadLocalUtil;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/questions")
public class QuestionController {

    @Autowired
    private QuestionService questionService;

    /**
     * 获取分页问题列表
     *
     * @param pageNum  页码
     * @param pageSize 每页大小
     * @return 分页问题列表
     */
    @GetMapping("/list")
    public PageInfo<Question> getQuestionList(
            @RequestParam(defaultValue = "1") int pageNum,
            @RequestParam(defaultValue = "10") int pageSize
    ) {
        return questionService.getAllQuestions(pageNum, pageSize);
    }

    /**
     * 获取问题概览信息
     *
     * @return 问题概览统计
     */
    @GetMapping("/overview")
    public List<Integer> getQuestionOverviewAPI() {
        return questionService.getQuestionOverview();
    }

    /**
     * 获取问题分类统计信息
     *
     * @return 问题分类统计
     */
    @GetMapping("/category")
    public Map<String, Integer> getQuestionCategoryAPI() {
        return questionService.getQuestionCategory();
    }

    /**
     * 获取问题时间趋势数据
     *
     * @return 问题时间趋势
     */
    @GetMapping("/trend")
    public Map<String, Object> getQuestionTrendAPI() {
        return questionService.getQuestionTrend();
    }

    /**
     * 提交问题
     *
     * @param question 提交的问题数据
     * @return 提交结果
     */
    @PostMapping("/submit")
    public Result<Question> submitQuestion(@RequestBody Question question) {
        // 获取当前登录用户的 user_id，假设通过一个方法获取
        Map<String, Object> map = ThreadLocalUtil.get();
        Integer userId = (Integer) map.get("id");

        // 自动补全其他字段
        question.setUserId(String.valueOf(userId));
        question.setIsSolve("2");  // 初始状态为待处理
        question.setTime(LocalDateTime.now());  // 设置当前时间

        // 调用服务层方法处理提交逻辑
        boolean isSubmitted = questionService.submitQuestion(question);

        if (isSubmitted) {
            return Result.success(question);
        } else {
            return Result.error("提交失败");
        }
    }
}
